// 泛型接口:在定义接口时,为接口的属性或方法定义泛型类型,在使用接口时,再指定具体的泛型类型
;
(() => {
    // 需求:定义一个类,用来存储用户的相关信息(id,name,age)
    // 通过一个类的实例对象调用add方法可以添加多喝用户信息对象,调用getUserId方法可以根据Id获取某个指定的用户信息对象
    //定义一个用户信息的类
    class User {
        constructor(name, age, id) {
            this.name = name;
            this.age = age;
            this.id = id;
        }
    }
    // 定义一个类.可以针对用户的信息对象进行增加及查询操作
    // CRUD -----> Create,Read,Update,Delete
    class UserCRUD {
        constructor() {
            this.data = [];
        }
        //方法用来存储用户信息对象的
        add(user) {
            // 产生id
            user.id = Date.now() + Math.random();
            // 把用户信息对象添加到data数组中
            this.data.push(user);
            return user;
        }
        //方法根据Id查询指定的用户信息对象
        getUserId(id) {
            return this.data.find(user => user.id === id);
        }
    }
    const userCRUD = new UserCRUD();
    // 调用添加数据的方法
    userCRUD.add(new User('jack', 20));
    userCRUD.add(new User('jack', 20));
    const { id } = userCRUD.add(new User('jack', 20));
    userCRUD.add(new User('jack', 20));
    userCRUD.add(new User('jack', 20));
    console.log(userCRUD.data);
    // 根据id查询用户信息对象数据
    const user = userCRUD.getUserId(id);
    console.log(user);
})();
